/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import entity.Pregunta;
import entity.Inciso;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateUtil;
import javax.management.Query;
import java.util.List;
import java.util.Iterator;
import java.io.Serializable;
import java.util.GregorianCalendar;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateUtil;
import entity.Tema;

public class PreguntaDAO implements Serializable
{
    //Método que consulta una lista de preguntas con sus incisos



    public static synchronized List<Pregunta> ConsultaPreguntasConIncisos(int idTema)
    {
        List <Pregunta> results=null;

		Session session=HibernateUtil.getSessionFactory().openSession();
		 try{
                       String hql="FROM Pregunta p WHERE p.idTemaEntity.idTema="+idTema;
                       //FROM Persona P WHERE P.categoria.id = 3
                       org.hibernate.Query query=session.createQuery(hql);
                      results=query.list();
                       for(Pregunta p : results){
                             System.out.println(p.getTextoPregunta());
                             System.out.println(p.getImagenCodigo());

                                List<Inciso> listaincisos=p.getIncisos();
                                 for(Inciso i:listaincisos){
                                     System.out.println(i.getTextoInciso());
                                 }
                            }
                          System.out.println(results.isEmpty()+"****************** L I S T A ***************");
                          session.close();
	             }catch(org.hibernate.exception.GenericJDBCException excepts){
			   if(session!= null&& session.isOpen())
				session.close();

	              }catch(Exception e){
			if(session!= null&& session.isOpen())
			     session.close();

	     }finally{
		      if(session!= null && session.isOpen())
			   session.close();

	    }

             return results;
    }


     /*Metodo que se encarga guardar un Examen
    * param: examen, usuario
    * return: idUsuario
    */
   public static synchronized int guardaPregunta(Pregunta pregunta,Tema tema){
        Session session=null;
        Transaction transaction=null;
        try{

            session=HibernateUtil.getSessionFactory().openSession();
            transaction=session.beginTransaction();
            Tema tem=null;
            tem=(Tema)session.load(Tema.class,new Integer(tema.getIdTema()));
             pregunta.setIdTemaEntity(tem);
            session.saveOrUpdate(pregunta);
            transaction.commit();
            session.close();
            return pregunta.getIdPregunta();
         }catch(org.hibernate.exception.GenericJDBCException excepts){
            transaction.rollback();
            if(session!=null&&session.isOpen()){
                session.close();
             }
            return -1;
         }catch(Exception e){
            transaction.rollback();
            if(session!=null&&session.isOpen()){
                session.close();
             }
            return -1;
          }finally{
            if(session!=null&&session.isOpen()) {
                session.close();

             }
          }
   }


    public static void main(String[]args){
        PreguntaDAO.ConsultaPreguntasConIncisos(3);
    }
}
